﻿/*
 * Copyright (C) 2016+     AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-GPL2
 * Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
 * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
 */

#include "Opcodes.h"
#include "WorldSession.h"
#include "WorldPacket.h"

void WorldSession::SendAuthResponse(uint8 code, bool shortForm, uint32 queuePos)
{
    /*
        BillingTimeRemaining
        剩余时间(分钟)

        BillingPlanFlags
        0x1
        0x2 您正在付费继续使用这个账号。当这个账号的游戏时间少于一天时，我们会通知您。
        0x4 免费账号即将过期。过期之后您即将被断开连接。\n剩余时间%s。
        0x8 您正在使用固定IGR付费方式。您的个人时间不会被扣除。该方式付费期将在%s内结束。 or 正在使用的IGR账号即将过期。过期之后您即将被断开连接。\n请联系您的IGR主管。
        0x16 您正在使用个人时间进行游戏，将在%d分钟后过期。您将在游戏时间结束之前的30分钟得到通知。
        0x32 您的账号上可能有通过其它支付方式获得的额外游戏时间。
    */
    WorldPacket packet(SMSG_AUTH_RESPONSE, 1 + 4 + 1 + 4 + 1 + (shortForm ? 0 : (4 + 1)));
    packet << uint8(code);
    packet << uint32(0);                                   // BillingTimeRemaining
    packet << uint8(0);                                    // BillingPlanFlags
    packet << uint32(0);                                   // BillingTimeRested
    packet << uint8(Expansion());                          // 0 - normal, 1 - TBC, 2 - WOTLK, must be set in database manually for each account

    if (!shortForm)
    {
        packet << uint32(queuePos);                             // Queue position
        packet << uint8(0);                                     // Realm has a free character migration - bool
    }

    SendPacket(&packet);
}

void WorldSession::SendClientCacheVersion(uint32 version)
{
    WorldPacket data(SMSG_CLIENTCACHE_VERSION, 4);
    data << uint32(version);
    SendPacket(&data);
}
